package com.tencent.ied.bk;


import cn.hutool.core.util.StrUtil;
import com.tencent.ied.bk.config.ChainConfig;
import com.tencent.ied.bk.entity.BaseAbstractInfo;
import com.tencent.ied.bk.handler.HandlerObject;
import com.tencent.ied.bk.service.ServiceFactory;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author yu_chen
 * @date 2021年03月09日23:41:28
 * <p>
 * 搜索摘要
 */
@Slf4j
public class CSearchAbstract {
    /**
     * @param strAbstract 标识输入的摘要。
     * @param iCount      标识该摘要搜索的次数。
     * @return 成功返回true, 异常返回FALSE。
     */
    public boolean addAbstract(String strAbstract, int iCount) {
        //创建基础摘要信息
        BaseAbstractInfo baseAbstractInfo = new BaseAbstractInfo(strAbstract, new AtomicInteger(iCount));
        //执行过滤操作
        if (!ChainConfig.filterChain.doFilter(baseAbstractInfo)) {
            return false;
        }
        //更新倒排索引信息
        ServiceFactory.createWordIndexService().updateWordIndex(baseAbstractInfo);
        //将摘要信息添加进容器并初始化
        ServiceFactory.createBaseAbstractInfoService().saveBaseAbstractInfo(baseAbstractInfo);
        return true;
    }

    /**
     * @param strKeyWord 搜索关键词。
     * @return 返回搜索到的摘要。
     */
    public String searchAbstract(String strKeyWord) {
        //如果是空串就直接返回
        if (StrUtil.isEmpty(strKeyWord)) {
            return "";
        }
        return ChainConfig.handlerChain.doHandle(new HandlerObject(strKeyWord.toLowerCase())).getResult();
    }

}
